package pers.xiaojun.boot.module.system.service.permission;

import com.baomidou.mybatisplus.extension.service.IService;
import pers.xiaojun.boot.module.system.dao.entity.permission.RoleMenuDO;

import java.util.Collection;
import java.util.List;

/**
 * 角色菜单服务类
 *
 * @author xiaojun
 * @since 2025-10-10
 */
public interface RoleMenuService extends IService<RoleMenuDO> {

    /**
     * 保存角色的菜单列表
     *
     * @param roleId  角色Id
     * @param menuIds 菜单Id列表
     */
    void saveRoleMenus(Long roleId, Collection<Long> menuIds);

    /**
     * 根据菜单Id删除角色菜单
     *
     * @param menuId 菜单Id列表
     */
    void removeByMenuId(Long menuId);

    /**
     * 根据一批菜单Id删除角色菜单
     *
     * @param menuIds 菜单Id列表
     */
    void removeByMenuIds(Collection<Long> menuIds);

    /**
     * 根据角色Id和菜单Id删除一批角色菜单
     *
     * @param roleId  角色Id
     * @param menuIds 菜单Id列表
     */
    void removeByRoleIdAndMenuIds(Long roleId, Collection<Long> menuIds);

    /**
     * 根据角色Id删除角色菜单
     *
     * @param roleId 角色Id列表
     */
    void removeByRoleId(Long roleId);

    /**
     * 根据一批角色Id删除角色菜单
     *
     * @param roleIds 角色Id列表
     */
    void removeByRoleIds(List<Long> roleIds);


    /**
     * 根据角色Id获取菜单Id列表
     *
     * @param roleId 角色Id
     * @return 菜单Id列表
     */
    List<Long> listMenuIdsByRoleId(Long roleId);


    /**
     * 根据角色Id获取菜单Id列表
     *
     * @param roleIds 角色Id列表
     * @return 菜单Id列表
     */
    List<Long> listMenuIdsByRoleIds(Collection<Long> roleIds);


}
